package br.com.thor.principal.servico;

import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.List;
import java.util.Properties;

import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Multipart;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;

import br.com.thor.biblioteca.mensageria.dados.CondicaoInfo;
import br.com.thor.biblioteca.mensageria.servico.ServicoBase;
import br.com.thor.biblioteca.persistencia.mensagens.ConsultarObjetoRequest;
import br.com.thor.biblioteca.persistencia.mensagens.SalvarObjetoRequest;
import br.com.thor.persistencia.PersistenciaDB;
import br.com.thor.principal.dados.MensagemInfo;
import br.com.thor.principal.dados.UsuarioInfo;
import br.com.thor.principal.mensagem.TesteRequest;
import br.com.thor.principal.mensagem.TesteResponse;

public class Servico extends ServicoBase implements IServico{

	@Override
	public TesteResponse teste(TesteRequest request) {
		TesteResponse response = new TesteResponse();
		String log = "";
		
//		// Salvar usuario
//		UsuarioInfo usuarioSalvar = new UsuarioInfo();
//		usuarioSalvar.setNome("Lucas");
//		usuarioSalvar.setEmail("robson@guhreige");
//		
//		SalvarObjetoRequest<UsuarioInfo> requestSalvar = new SalvarObjetoRequest<UsuarioInfo>();
//		requestSalvar.setObjeto(usuarioSalvar);
//		UsuarioInfo usuario = new UsuarioInfo();
//		try {
//			usuario = 
//					PersistenciaDB.salvarObjeto(UsuarioInfo.class, requestSalvar).getObjeto();
//		} catch (Throwable e) {
//			// TODO Auto-generated catch block
//			e.printStackTrace();
//		}
//		
		Properties props = new Properties();
        Session session = Session.getDefaultInstance(props, null);
        
        MensagemInfo m = request.getMensagem();
		StringBuilder str = new StringBuilder();
		
		str.append("<table>");
		str.append("<tr>");
		str.append("<td><b>CONTATO WEB</b></td>");
		str.append("<td></td>");
		str.append("</tr>");
		str.append("<tr>");
		str.append("<td><b>Nome:</b></td>");
		str.append("<td>"+ m.getNome()+"</td>");
		str.append("</tr>");
		str.append("<tr>");
		str.append("<td><b>Cidade:</b></td>");
		str.append("<td>"+ m.getCidade()+"</td>");
		str.append("</tr>");
		str.append("<tr>");
		str.append("<td><b>Telefone:</b></td>");
		str.append("<td>"+m.getTelefone()+"</td>");
		str.append("</tr>");
		str.append("<tr>");
		str.append("<td><b>Email:</b></td>");
		str.append("<td>"+m.getEmail()+"</td>");
		str.append("</tr>");
		str.append("</table>");
		str.append("<br />");
		str.append("<table>");
		str.append("<tr>");
		str.append("<td><b>Mensagem:</b></td>");
		str.append("</tr>");
		str.append("<tr>");
		str.append("<td>"+m.getMensagem()+"</td>");
		str.append("</tr>");
		str.append("</table>");

        try {
            Message msg = new MimeMessage(session);
            msg.setFrom(new InternetAddress("thorclimatizacao123@gmail.com", "Thor Climatizacao"));
            msg.addRecipient(Message.RecipientType.TO,
                             new InternetAddress("cercaoc@gmail.com", "Lucas Rodrigues"));
            msg.setSubject("Contato Web");
            Multipart mp = new MimeMultipart();
            MimeBodyPart htmlPart = new MimeBodyPart();
            htmlPart.setContent(str.toString(), "text/html");
            mp.addBodyPart(htmlPart);
            msg.setContent(mp);
            Transport.send(msg);

        } catch (AddressException e) {
            // ...
        	try {
				throw new Exception(e);
			} catch (Exception e1) {
				// TODO Auto-generated catch block
				e1.printStackTrace();
			}
        } catch (MessagingException e) {
            // ...
        	try {
				throw new Exception(e);
			} catch (Exception e1) {
				// TODO Auto-generated catch block
				e1.printStackTrace();
			}
        } catch (UnsupportedEncodingException e) {
        	// ...
        	try {
				throw new Exception(e);
			} catch (Exception e1) {
				// TODO Auto-generated catch block
				e1.printStackTrace();
			}
        }

		
//		// Listar usuario
//		List<CondicaoInfo> condicoes = new ArrayList<CondicaoInfo>();
//		//condicoes.add(new CondicaoInfo("nome", CondicaoTipoEnum.Igual, "Robson"));
//		ConsultarObjetoRequest<UsuarioInfo> requestUsuario = new ConsultarObjetoRequest<UsuarioInfo>();
//		requestUsuario.setCondicoes(condicoes);
//		try {
//			List<UsuarioInfo> resultado = 
//					PersistenciaDB.consultarObjeto(
//							UsuarioInfo.class,
//							requestUsuario).getResultado();
//			
//			for (UsuarioInfo usuarioInfo : resultado) {
//				log += usuarioInfo.getId() + " - " + usuarioInfo.getNome() + " - " + usuarioInfo.getEmail() + "\n";
//			}
//		} catch (Throwable e) {
//			// TODO Auto-generated catch block
//			e.printStackTrace();
//		}
		
//		response.setResultado(log);
		//response.setResultado(persistencia.teste("ServicoExecutado!!!"));
		return response;
	}

}
